package com.WebMentorPro.system.config;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class CustomDateDeserializer extends JsonDeserializer<Date> {

    private static final String[] DATE_FORMATS = {
        "yyyy-MM-dd",
        "yyyy/MM/dd",
        "dd-MM-yyyy",
        "dd/MM/yyyy",
        "yyyy/MM/dd'T'HH:mm:ss",
        "yyyy-MM-dd'T'HH:mm:ss",  // 带 'T' 的日期时间格式
        "yyyy-MM-dd HH:mm:ss"     // 不带 'T' 的常见日期时间格式
    };

    @Override
    public Date deserialize(JsonParser parser, DeserializationContext context) throws IOException {
        // 从 JSON 中获取日期字符串
        String dateString = parser.getText();
        if (dateString == null || dateString.trim().isEmpty()) {
            throw new IOException("日期字符串为空或 null");
        }
        // 遍历支持的日期格式并尝试解析
        for (String format : DATE_FORMATS) {
            try {
                return new SimpleDateFormat(format).parse(dateString);
            } catch (ParseException e) {

            }
        }
        // 如果所有格式均解析失败，抛出异常
        throw new IOException("无法解析的日期: " + dateString);
    }
}
